package cn.hesion.designpattern.template.course;

public abstract class NetWorkCourse {
    protected final void createCourse(){
        //发布预习资料
       this.postPreResource();
        //创建备课PPT
        this.createPPT();
        //直播授课
        this.liveVideo();
        //提交作业和笔记
        this.postNote();
        //提交源代码
        this.postSource();

        //布置作业，有些课是没有作业的，有些课是有作业的
        //如果有作业，检查作业如果没有作业流程结束
        if(needHomework()){
            checkHomework();
        }
    }

    //发布预习资料
    final void postPreResource(){
        System.out.println("分发预习资料");
    }
    //创建备课PPT
    final void createPPT(){
        System.out.println("创建备课PPT");
    }
    //直播授课
    final void liveVideo(){
        System.out.println("直播授课");
    }

    //提交作业和笔记
    final void postNote(){
        System.out.println("提交作业和笔记");
    }
    //提交源代码
    final void postSource(){
        System.out.println("提交源代码");
    }

    abstract void checkHomework();
    protected boolean needHomework(){return false;}

}
